<?php

require_once('config.php');
require_once('GHAPI.php');

class Interfaz {
	var $db;
	var $error;
	
	function Interfaz($host, $user, $pass, $dbname) {
		$this->db = mysql_connect($host, $user, $pass) or die (mysql_error());
		mysql_select_db($dbname) or die (mysql_error());
	}
	
	function creaProb($probID) {
		$ghapi = new GoogleHealthAPI($this->db);
		$ghapi->createPartialProfile($probID);
		//$ghapi->createProblem($probID);
	}
	
	function nuevaCuentaGH($patientID) {
		require("newaccount.php");
	}

	function managePrivileges($patientID) {
		require("privilege.php");
	}

	function importarGH($extAccID) {
		$ghapi = new GoogleHealthAPI($this->db);
		
		$sql = "SELECT * FROM ForeignAccounts WHERE id = ".$extAccID." AND type = 'GoogleHealth'";
		$result = mysql_query($sql);
		
		if (mysql_num_rows($result) > 0) {
			$row = mysql_fetch_assoc($result);
			$ghapi->importaPerfil ($row['patientID'], $row['username'], $row['password'], $row['argument'], $row['lastUpdated'], $extAccID);
		} else {
			echo "No se importo nada";
		}
	}
	
	function deleteItem($itemid, $itemtype) {
		$table = $itemtype . 's';
		
		switch ($itemtype) {
			case  'Actor':
			case  'Alert':
			case  'Function':
			case  'Immunization':
			case  'Medication':
			case  'Payer':
			case  'Problem':
			case  'Procedure':
			case  'Result':
			case  'File':
				$minlvl = 2;
			break;

			case  'ForeignAccount':
			case  'Privilege':
				$minlvl = 3;
			break;
			
			default:
				die ("Error, usuario no tiene permisos o item no existe");
			break;
		}

		$sql = "SELECT item.patientID, priv.type FROM {$table} AS item, Privileges AS priv WHERE item.patientID = priv.patientID AND priv.type >= {$minlvl} AND item.id = {$itemid} AND priv.userID = {$_SESSION['userId']}";
		$result = mysql_query($sql);
	
		if (mysql_num_rows($result) > 0) {
			$sql = "DELETE FROM {$table} WHERE id = {$itemid} LIMIT 1";
			mysql_query($sql);
			if (mysql_affected_rows() !== 1) {
				echo "Error, usuario no tiene permisos o item no existe";
			} else {
				echo '<script language="javascript">alert("The '.$itemtype.' has been deleted"); history.go(-1);</script>';
			}
		} else {
			echo "Error, usuario no tiene permisos o item no existe";
		}
	}
	
	function muestraListaPerfiles() {
		$sql = "SELECT * FROM Privileges AS priv LEFT JOIN Patients as pat ON priv.patientID = pat.id WHERE priv.userID = ".$_SESSION['userId'];
		$result = mysql_query($sql);
		
		if (mysql_num_rows($result) > 0) {
			echo "<table width=80% border=0 class=\"tabla1\">\n";
			echo "<tr><th colspan=4>Profiles</th></tr>\n";
			echo "<tr><th>Type</th><th>Name</th><th>Sex</th><th>Birth Date</th></tr>\n";
			while ($row = mysql_fetch_assoc($result)) {
				switch ($row['type']) {
					case '3':
						$typestr = "Owner";
					break;
					case '2':
						$typestr = "Read/Write";
					break;
					case '1':
						$typestr = "ReadOnly";
					break;
					default:
						$typestr = "Unknown";
					break;
				}
				echo "<tr><td>{$typestr}</td><td><a href='?mode=detallepaciente&id={$row['patientID']}'>{$row['name']}</a></td><td>{$row['sex']}</td><td>{$row['birthDate']}</td></tr>\n";
			}
			echo "</table><br \>\n";
		}
	}
	
	function opcionesPerfil($patientID) {
		$this->muestraDetallePaciente($patientID);

		echo "<table width=80% border=0 class=tabla1>
				<tr>
					<th><a href='?mode=listaperfiles'>Profile list</a></th>
					<th><a href='?mode=detallepaciente&id=".$patientID."'>Profile home</a></th>
					<th><a href='?mode=editprofileinfo&id=".$patientID."'>Edit your profile information</a></th>
					<th><a href='?mode=manageprivileges&id=".$patientID."'>Manage Privileges</a></th>
					<th><a href='index.php?mode=newghaccount&id=".$patientID."'>Manage external accounts</a></th>
				</tr>
			</table>";
	}
	
	function muestraMenuPaciente($patientNo) {
		echo "<table width=80% border=0 class=tabla1>
				<tr>
					<th><a href='?mode=muestraalerts&id={$patientNo}'>Alerts</a></th>
					<th><a href='?mode=muestraimmunizations&id={$patientNo}'>Immunizations</a></th>
					<th><a href='?mode=muestramedications&id={$patientNo}'>Medications</a></th>
					<th><a href='?mode=muestraproblems&id={$patientNo}'>Problems</a></th>
					<th><a href='?mode=muestraprocedures&id={$patientNo}'>Procedures</a></th>
					<th><a href='?mode=muestraresults&id={$patientNo}'>Results</a></th>
					<th><a href='?mode=muestraArchivosDesk&id={$patientNo}'>Files</a></th>
				</tr>
			</table>";
	}

	function muestraDetallePaciente($patientNo) {
		$sql = "SELECT * FROM Patients WHERE id = $patientNo";
		$result = mysql_query($sql);
		
		if (mysql_num_rows($result) > 0) {
			echo "<table width=80% border=0 class=\"tabla1\">\n";
			echo "<tr><th colspan=4>Personal Details</th></tr>\n";
			while ($row = mysql_fetch_assoc($result)) {
				echo "<tr><th>Name</td><td colspan=3>{$row['name']}</th></tr>\n";
				echo "<tr><th>Address</th><td>{$row['address']}</td><th>Sex</th><td>{$row['sex']}</td></tr>\n";
				echo "<tr><th>Date of Birth</th><td>{$row['birthDate']}</td><th>Tel No</th><td>{$row['telephone']}</td></tr>\n";
				echo "<tr><td align=center colspan=4><a href=\"?mode=profileoptions&id=".$patientNo."\">Profile Options</a></td></tr>\n";			
				echo "</table><br \>\n";
			}
		} else {
			echo "No existe el paciente con ese numero";
		}
	}
	
	function muestraTabla ($patientNo, $tabla, $columnas, $sortBy, $agregaMode) {
		$sql = "SELECT * FROM ".$tabla." WHERE patientID = ".$patientNo." ORDER BY ".$sortBy." ASC";
		$result = mysql_query($sql);
		echo "<table width=80% border=0 class=\"tabla1\">\n";
		echo "<tr><th colspan=".(count($columnas)+1).">".$tabla."</th></tr>\n";
		if (mysql_num_rows($result) > 0) {

			echo "<tr>";
			foreach($columnas as $title => $data) {
				echo "<th>".$title."</th>";
			}
			echo "<th>Delete</th>";
			echo "</tr>\n";

			while($row = mysql_fetch_assoc($result)) {
				echo "<tr>";
				foreach($columnas as $title => $data) {
					if (is_array($data)) {
						echo "<td>";
						foreach($data as $parte) {
							echo $row[$parte] . " ";
						}
						echo "</td>";
					} else {
						echo "<td>".$row[$data]."</td>";
					}
				}
				echo "<td><a href=index.php?mode=deleteitem&itemtype=".rtrim($tabla, 's')."&itemid=".$row['id'].">Delete</a></td>";
				echo "</tr>\n";
			}
		}
		echo "<tr><td align=center colspan=".(count($columnas)+1)."><a href=\"?mode=".$agregaMode."&id=".$patientNo."\">Add</a></td></tr>\n";
		echo "</table>\n";
	}
}

// verificacion
session_start();

if (!isset($_SESSION['userId'])) {
	header("Location: login.php");
}

$mode = $_GET['mode'];
$id = $_GET['id'];

// procesamiento
$interfaz = new Interfaz($config['dbhost'], $config['dbusername'], $config['dbpassword'], $config['dbname']);

// presentacion
?>
<html>
	<head>
		<title>WeCare EMR</title>
		<link rel="stylesheet" type="text/css" href="menu.css" />
		<link rel="stylesheet" type="text/css" href="estilos.css" />
		<script type="text/javascript" src="menu.js"></script>
		<script type="text/javascript" src="validaciones.js"></script>
	</head>
	<body>
		<table width="100%" border="0" cellspacing="5" cellpadding="5">
		<tr id="header">
		  <td align="left" valign="middle" colspan="2"><a href="index.php"><img src="images/logo2.png" alt="" border="0"/></a></td>
		  <td align="right">Welcome, <?php echo $_SESSION['fullName']; ?><br/><a href="logout.php">Logout</a></td>
		</tr>
		<tr id="content">
		<td align="center" valign="middle" colspan="3">
		<?php
		switch($mode) {
			case 'detallepaciente':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
			break;
			
			case 'profileoptions':
				$interfaz->opcionesPerfil($id);
			break;
			
			case 'newghaccount':
				$interfaz->opcionesPerfil($id);
				echo "</br>\n";
				$interfaz->nuevaCuentaGH($id);
			break;
			
			case 'manageprivileges':
				$interfaz->opcionesPerfil($id);
				echo "</br>\n";
				$interfaz->managePrivileges($id);
			break;

			case 'importgh':
				$interfaz->importarGH($_GET['accid']);
			break;
			
			case 'deleteitem':
				$interfaz->deleteItem($_GET['itemid'], $_GET['itemtype']);
			break;

			case 'listaperfiles':
				$interfaz->muestraListaPerfiles();
			break;

			case 'muestraalerts':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Alerts', array('Name'=>'alertName', 'Start Date'=>'startDate', 'Stop Date'=>'stopDate', 'Status'=>'status', 'Severity'=>'severity', 'Treated By'=>'treatedBy'), 'startDate', 'agregaalerta');
			break;

			case 'muestraimmunizations':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Immunizations', array('Name'=>'productName', 'Date'=>'date', 'Stength'=>array('strengthValue', 'strengthUnits')), 'date', 'agregavacuna');
			break;

			case 'muestramedications':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Medications', array('Name'=>'productName', 'Start Date'=>'startDate', 'Stop Date'=>'stopDate', 'Dose'=>array('doseValue', 'doseUnits'), 'Status'=>'status', 'Treated By'=>'treatedBy'), 'startDate', 'agregamedicina');
			break;

			case 'muestraproblems':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Problems', array('Name'=>'productName', 'Start Date'=>'startDate', 'Stop Date'=>'stopDate', 'Status'=>'status', 'Treated By'=>'treatedBy'), 'startDate', 'agregaproblema');
			break;
			
			case 'muestraprocedures':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Procedures', array('Name'=>'productName', 'Start Date'=>'startDate', 'Stop Date'=>'stopDate', 'Treated By'=>'treatedBy'), 'startDate', 'agregaprocedure');
			break;
			
			case 'muestraresults':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				$interfaz->muestraTabla($id, 'Results', array('Name'=>'productName', 'Date'=>'date', 'Result'=>array('resultValue', 'resultUnits'), 'Normal'=>array('normalValue', 'normalUnits'), 'Ordered By'=>'orderedBy'), 'date', 'agregaresult');
			break;
			
			case 'muestraArchivosDesk':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				require("fileScripts/desktop/files.php");
			break;					
			
			case 'subeArchivo':
				$interfaz->muestraDetallePaciente($id);
				$interfaz->muestraMenuPaciente($id);
				echo "</br>\n";
				require("fileScripts/desktop/uploadFile.php");
			break;
			
			case 'muestraArchivosMob':
				require("fileScripts/mobile/files.php");
			break;

			case 'muestraMenuMob':
				require("fileScripts/mobile/menu.php");
			break;
			
			case 'creaProb':
				$interfaz->creaProb($id);
			break;
			
			default:
				$interfaz->muestraListaPerfiles();
			break;
		}
	?></td>
		</tr>
		<tr id="footer">
		  <td colspan="3">&nbsp;</td>
		</tr>
	      </table>
	</body>
</html>
<?php
?>